/*
 * 1172. 删除元素
 * 给定一个数组和一个值，在原地删除与值相同的数字，返回新数组的长度。
 * 元素的顺序可以改变，并且对新的数组不会有影响。
 * https://www.lintcode.com/problem/remove-element/description
 * 
 * 样例
 * 给出一个数组 [0,4,4,0,0,2,4,4]，和值 4
 * 返回 4 并且4个元素的新数组为[0,0,0,2]
 * 
 * 2018.06.17 @jeyming
 */
package remove_element_1172;

import java.util.ArrayList;
import java.util.List;

public class Remove_element_1172 {
    /*
     * @param A: A list of integers
     * @param elem: An integer
     * @return: The new length after remove
     */
    public int removeElement(int[] A, int elem) {
        // write your code here
    	//方法一：
//    	List<Integer> list = new ArrayList<Integer>();
//    	for(int i = 0; i < A.length; ++i) {
//    		if(A[i] != elem) {
//    			list.add(A[i]);
//    		}
//    	}
//    	for(int i = 0; i < list.size(); ++i) {
//    		A[i] = list.get(i);
//    	}
//    	return list.size();
    	//方法二：
    	int cnt = 0;
    	for(int i = 0; i < A.length; ++i) {
    		if(A[i] != elem) {
    			A[cnt] = A[i];
    			++cnt;
    		}
    	}
    	return cnt;
    }

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
